home *** CD-ROM | disk | FTP | other *** search
/ Screensavers 98 / Screensavers 98.iso / ass / brawn alarm / braun.ms_ / braun.ms
Text File  |  2000-03-28  |  9KB  |  344 lines

  1. '$DEFINE DEBUG  ''Define for script development/debugging
  2.  
  3. '$INCLUDE 'setupapi.inc'
  4. '$INCLUDE 'msdetect.inc'
  5.  
  6. ''Dialog ID's
  7. CONST WELCOME       = 100
  8. CONST ASKQUIT       = 200
  9. CONST TOOBIG        = 300
  10. CONST EXITFAILURE   = 400
  11. CONST EXITQUIT      = 600
  12. CONST EXITSUCCESS   = 700
  13. CONST APPHELP       = 900
  14. CONST COPYING    = 103
  15. CONST BADPATHDLG = 108
  16. CONST GETPATH = 106
  17.  
  18.  
  19. ''Bitmap ID
  20. CONST LOGO = 1
  21.  
  22. GLOBAL WinDrive$
  23. GLOBAL DEST$        ''Default destination directory.
  24. GLOBAL OPTCUR$      ''Option selection from option dialog.
  25. GLOBAL CUIDLL$
  26. GLOBAL MAINDEST$
  27.  
  28. DECLARE SUB Install
  29. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  30. DECLARE FUNCTION GetLanguageCode AS INTEGER
  31.  
  32. DECLARE FUNCTION GetIntl(szKey$) AS STRING
  33. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  34. DECLARE FUNCTION IsBigEnough(size%) AS INTEGER
  35.  
  36. DECLARE SUB CopyTheDirectory
  37. DECLARE SUB UpdateWinG32 (szOrig$) 
  38.  
  39. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  40. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  41. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  42. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  43. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  44. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$) 
  45. DECLARE    FUNCTION CopyDirectory LIB "MSCUISTF.DLL" (src$, dest$) AS INTEGER
  46.  
  47. INIT:
  48.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  49.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  50.  
  51.     Lang% = 0
  52.     SetBitmap CUIDLL$, LOGO
  53.     SetTitle "Braun Alarm Clock Screensaver"
  54.  
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.         szInf$ = GetSymbolValue("STF_CWDDIR") + "BRAUN.INF"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61.     OPTCUR$ = "1"
  62.     DEST$ = "C:\BRAUN"
  63.  
  64. '$IFDEF DEBUG
  65.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  66.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  67.     IF IsDriveValid(WinDrive$) = 0 THEN
  68.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  69.         GOTO QUIT
  70.     END IF
  71. '$ENDIF ''DEBUG
  72.  
  73.  
  74. WELCOME:
  75.     sz$ = UIStartDlg(CUIDLL$, Lang%+WELCOME, "FInfoDlgProc", Lang%+APPHELP, HELPPROC$)
  76.     IF sz$ = "CONTINUE" THEN
  77.         UIPop 1
  78.     ELSE
  79.         GOSUB ASKQUIT
  80.         GOTO WELCOME
  81.     END IF
  82.  
  83.     Install
  84.  
  85.  
  86. QUIT:
  87.     ON ERROR GOTO ERRQUIT
  88.  
  89.     IF ERR = 0 THEN
  90.         dlg% = EXITSUCCESS
  91.     ELSEIF ERR = STFQUIT THEN
  92.         dlg% = EXITQUIT
  93.     ELSE
  94.         dlg% = EXITFAILURE
  95.     END IF
  96. QUITL1:
  97.     sz$ = UIStartDlg(CUIDLL$, Lang%+dlg%, "FInfo0DlgProc", 0, "")
  98.     IF sz$ = "REACTIVATE" THEN
  99.         GOTO QUITL1
  100.     END IF
  101.     UIPop 1
  102.  
  103.     END
  104.  
  105. ERRQUIT:
  106.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  107.     END
  108.  
  109. ASKQUIT:
  110.     sz$ = UIStartDlg(CUIDLL$, Lang%+ASKQUIT, "FQuitDlgProc", 0, "")
  111.  
  112.     IF sz$ = "EXIT" THEN
  113.         UIPopAll
  114.         ERROR STFQUIT
  115.     ELSEIF sz$ = "REACTIVATE" THEN
  116.         GOTO ASKQUIT
  117.     ELSE
  118.         UIPop 1
  119.     END IF
  120.     RETURN
  121.  
  122.  
  123.  
  124. '**
  125. '** Purpose:
  126. '**     Builds the copy list and performs all installation operations.
  127. '** Arguments:
  128. '**     none.
  129. '** Returns:
  130. '**     none.
  131. '*************************************************************************
  132. SUB Install STATIC
  133.  
  134.     DEST$ = GetWindowsDir
  135.  
  136.     IF IsBigEnough(4) = 0 THEN
  137.         GOSUB NOSPACE
  138.         ERROR STFERR
  139.         EXIT SUB
  140.     END IF
  141.     UIPop 1
  142.  
  143.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  144.     MAINDEST$=DEST$
  145.     CreateDir DEST$, cmoNone
  146.  
  147.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  148.     WriteToLogFile ""
  149.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  150.     WriteToLogFile "May have had to create the directory: " + DEST$
  151.     WriteToLogFile ""
  152.  
  153.     ini$ = MakePath(GetWindowsDir, "BRAUN.INI")
  154.     CreateIniKeyValue ini$, "BRAUN", "InstallDir", DEST$ , cmoNone
  155.  
  156.     DEST$ = GetWindowsDir
  157.  
  158.     AddSectionFilesToCopyList "saver", SrcDir$, DEST$
  159.    
  160.     CreateIniKeyValue ini$, "Main", "NumFiles", "1" , cmoNone
  161.     CreateIniKeyValue ini$, "Main", "Language", GetIntl("sLanguage") , cmoNone
  162.     CreateIniKeyValue ini$, "Main", "Country", GetIntl("sCountry") , cmoNone
  163.  
  164.     DEST$ = GetWindowsSysDir
  165.     
  166.     AddSectionFilesToCopyList "runtime", SrcDir$, DEST$
  167.     IF OnWin3x() = 1 THEN
  168.         AddSectionFilesToCopyList "dva", SrcDir$, DEST$
  169.         IF VflatdPresent() = 0 THEN
  170.             CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  171.             bInstallDVA% = 1
  172.         END IF
  173.     END IF
  174.     
  175.     DEST$ = GetRealWindowsSysDir
  176.     
  177.     AddSectionFilesToCopyList "wing32", SrcDir$, DEST$
  178.     Dest1$ = MakePath(DEST$,"wing32.dll")
  179.     Dest2$ = MakePath(DEST$,"wing32.xxx")
  180.     RenameFilePlease Dest1$,Dest2$
  181.     
  182.     CopyFilesInCopyList
  183. ''
  184. ''    Uncomment this bit if you want the copy facility
  185. ''
  186. ''    CopyTheDirectory
  187.  
  188.     UpdateWinG32 GetRealWindowsSysDir()
  189.     CloseLogFile
  190.  
  191.     EXIT SUB
  192.  
  193. BADPATH:
  194.     sz$ = UIStartDlg(CUIDLL$, BADPATHDLG, "FInfo0DlgProc", 0, "")
  195.     IF sz$ = "REACTIVATE" THEN
  196.         GOTO BADPATH
  197.     END IF
  198.         UIPop 1
  199.     RETURN
  200.  
  201. NOSPACE:
  202.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  203.     IF sz$ = "REACTIVATE" THEN
  204.         GOTO NOSPACE
  205.     END IF
  206.         UIPop 1
  207.     RETURN
  208.  
  209. END SUB
  210.  
  211. '**
  212. '** Purpose:
  213. '**     Appends a file name to the end of a directory path,
  214. '**     inserting a backslash character as needed.
  215. '** Arguments:
  216. '**     szDir$  - full directory path (with optional ending "\")
  217. '**     szFile$ - filename to append to directory
  218. '** Returns:
  219. '**     Resulting fully qualified path name.
  220. '*************************************************************************
  221. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  222.     IF szDir$ = "" THEN
  223.         MakePath = szFile$
  224.     ELSEIF szFile$ = "" THEN
  225.         MakePath = szDir$
  226.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  227.         MakePath = szDir$ + szFile$
  228.     ELSE
  229.         MakePath = szDir$ + "\" + szFile$
  230.     END IF
  231. END FUNCTION
  232.  
  233. FUNCTION GetIntl(szKey$) STATIC AS STRING
  234.     szBuf$ = string$(256,32)
  235.     cbBuf% = GetProfileString("intl",szKey$,"Engl",szBuf$,256)
  236.     IF cbBuf% = 0 THEN
  237.         GetIntl="Engl"
  238.         ERROR STFERR
  239.     END IF
  240.     GetIntl = szBuf$
  241.     szBuf=""
  242. END FUNCTION
  243.  
  244. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  245.     szBuf$ = string$(260, 32)
  246.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  247.     IF cbBuf% = 0 THEN
  248.         ERROR STFERR
  249.     ELSE
  250.         IF cbBuf% > 259 THEN
  251.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  252.             ERROR STFERR
  253.         END IF
  254.         szBuf$ = RTRIM$(szBuf$)
  255.         IF MID$(szBuf$, 1, 1) = "\" THEN
  256.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  257.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  258.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  259.         END IF
  260.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  261.             szBuf$ = szBuf$ + "\"
  262.         END IF
  263.         GetRealWindowsSysDir = szBuf$
  264.     END IF
  265.  
  266.     szBuf$ = ""
  267. END FUNCTION
  268.  
  269. SUB UpdateWinG32 (szOrig$) STATIC 
  270.     '
  271.     ' Here we check the version ourselves of wing32.dll, since 
  272.     ' we can't get version checking for Win32 apps from Win16
  273.     '
  274.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  275.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  276.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  277.     RemoveFile FileOrig$, cmoForce
  278.     ELSE
  279.         RemoveFile FileNew$, cmoForce        ' get rid of new file
  280.     RenameFilePlease FileOrig$,FileNew$    ' put back old file
  281.     END IF
  282. END SUB
  283.  
  284.  
  285. FUNCTION GetLanguageCode STATIC AS INTEGER
  286.     langname$ = ucase$(GetIntl("sLanguage"))
  287.  
  288.     GetLanguageCode=0
  289.  
  290.     IF langname$ = "ENG" THEN
  291.         GetLanguageCode=0
  292.     END IF
  293.     IF langname$ = "FRC" THEN
  294.         GetLanguageCode=1000
  295.     END IF
  296.     IF langname$ = "FRA" THEN
  297.         GetLanguageCode=1000
  298.     END IF
  299.     IF langname$ = "DEU" THEN
  300.         GetLanguageCode=2000
  301.     END IF
  302.     IF langname$ = "ITA" THEN
  303.         GetLanguageCode=3000
  304.     END IF
  305.     IF langname$ = "ESN" THEN
  306.         GetLanguageCode=4000
  307.     END IF
  308.     IF langname$ = "ESP" THEN
  309.         GetLanguageCo